//package com.campus.user.util;
//
//import cn.hutool.jwt.JWT;
//import cn.hutool.jwt.JWTValidator;
//import cn.hutool.jwt.signers.JWTSigner;
//import cn.hutool.jwt.signers.JWTSignerUtil;
//import org.springframework.stereotype.Component;
//
//import java.security.KeyPair;
//import java.time.Duration;
//import java.util.Date;
//
//@Component
//public class JwtTool {
//
//    private final JWTSigner jwtSinger;
//
//    public JwtTool(KeyPair keyPair) {
//        this.jwtSinger = JWTSignerUtil.createSigner("rs256", keyPair);
//    }
//
//    public String createToken(String userId, Duration ttl) {
//        return JWT.create()
//                .setPayload("user", userId)
//                .setExpiresAt(new Date(System.currentTimeMillis() + ttl.toMillis()))
//                .setSigner(jwtSinger)
//                .sign();
//    }
//
//    public Long parseToken(String token) {
//
//        //1.验证token是否为空
//        if (token == null) {
//            return null;
//        }
//
//        //2.校验解析token
//        JWT jwt;
//        try {
//            jwt = JWT.of(token).setSigner(jwtSinger);
//        } catch (Exception e) {
//            throw new RuntimeException("token无效");
//        }
//
//        //校验jwt是否有效
//        if (!jwt.verify()) {
//            throw new RuntimeException("token无效");
//        }
//
//        //3.验证是否过期
//        try {
//            JWTValidator.of(jwt).validateDate();
//        } catch (Exception e) {
//            throw new RuntimeException("token过期");
//        }
//
//        //4.数据格式校验
//        Object user = jwt.getPayload("user");
//        if (user == null) {
//            throw new RuntimeException("token无效");
//        }
//
//        //5.数据解析
//        try {
//            return Long.parseLong(user.toString());
//        } catch (Exception e) {
//            throw new RuntimeException("token无效");
//        }
//    }
//
//
//}
